﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Cartography.Desktop
{
    public class Distancia
    {
        public static double getDistance(LatLon a, LatLon b)
        {
            // Función que, dados 2 puntos LatLon, retorna la ditancia entre dichos puntos.
            double R = 6371; //Radio medio terrestre
            double dlat = degToRad(b.Latitude - a.Latitude);
            double dlong = degToRad(b.Longitude - a.Longitude);

            double a1 = Math.Pow(Math.Sin(dlat / 2), 2.0) + Math.Cos(degToRad(a.Latitude)) * Math.Cos(degToRad(b.Latitude)) * Math.Pow(Math.Sin(dlong / 2), 2.0);
            double c = 2.0 * Math.Atan2(Math.Sqrt(a1), Math.Sqrt(1 - a1));

            return R * c;
        }

        public static double degToRad(double angle)
        {
            return Math.PI * angle / 180.0;
        }
    }
}